#include<cstdio>
#include<cstring>
char a[4000];
int n,f[4000],p[4000];
bool b[4000][4000],sp[4000];
int min(int x,int y)
{
	return x<y?x:y;
}
int main()
{
	freopen("test.in","r",stdin);
	scanf("%s",a);
	n=strlen(a);
	for(int i=0;i<n;i++)
		b[i][i]=true;
	for(int i=n-2;i>=0;i--)
		for(int j=i+1;j<n;j++)
			if(a[i]!=a[j])b[i][j]=false;
			else if(i+1==j) 
				  b[i][j]=true;
				 else b[i][j]=b[i+1][j-1];
	f[0]=1;p[0]=-1;
	for(int i=1;i<n;i++)
	{
		f[i]=f[i-1]+1;
		p[i]=i-1;
		for(int j=i-1;j>=1;j--)
			if(b[j][i]&&f[j-1]+1<f[i])
			{
				f[i]=f[j-1]+1;
				p[i]=j-1;
			}
		if(b[0][i]){f[i]=1;p[i]=-1;}
	}
	memset(sp,false,sizeof(sp));
	int t=p[n-1];
	while(t>=0)
	{
		sp[t]=true;
		t=p[t];
	}
	printf("%d\n",f[n-1]);
	for(int i=0;i<n;i++)
		if(sp[i])printf("%c ",a[i]);
		else printf("%c",a[i]);
	printf("\n");
	return 0;
}
		

